이스트캠프 Spring 퀴즈 1

📘 오늘 학습한 내용

1️⃣ Spring


📝 퀴즈

🧩 퀴즈 1

Q. POJO(Plain Old Java Object)의 개념과 장점은?

📝 나의 답변:

순수 Java를 사용하여 만든 객체임을 의미합니다.

✅ 피드백:

- 외부 기술이 아닌 순수 Java 기술만을 사용하여 객체를 만들면 특정 기술이나 환경에 종속되지 않는다.
- 객체 지향 설계를 제한 없이 적용할 수 있고, 코드가 단순해져 테스트와 디버깅이 쉬워진다.

🧩 퀴즈 2

Q. Spring에서 DI(Dependency Injection)와 IoC(Inversion of Control)가 무엇을 의미하나요

📝 나의 답변:

DI는 한 객체가 다른 객체를 사용할 때 직접 생성하는 것이 아닌 객체를 주입받아 사용하는 것을 의미합니다.
IoC는 제어의 주체가 개발자가 아닌 프로그램임을 의미하여 개발을 보다 쉽게 진행할 수 있도록 해줍니다.

✅ 피드백:

- DI : 어떤 객체가 사용할 객체를 직접 만드는 것이 아니라 객체를 주입받아 사용하는 것
- 개발자가 설정 파일에 특정 객체가 사용할 다른 객체를 설정해두면, 어플리케이션이 동작하면서 Spring이 설정 파일을 해석해 특정 객체에게 필요한 생성자를 전달한다.

- IoC : 제어의 주체가 개발자가 아닌 프레임워크로, 개발자가 아닌 Spring이 객체들 간의 의존 관계와 생명 주기 관리까지 모든 제어권을 가진다. 

🧩 퀴즈 3

Q. AOP(Aspect-Oriented Programming)가 무엇인가요?

✅ 피드백:

**어플리케이션 전반에 걸쳐 적용되는 공통 기능을 비즈니스 로직으로부터 분리하는 것**

🧩 퀴즈 4

Q. 전통적인 JSP/Servlet 개발 방식의 한계는 무엇이고, Spring MVC가 이걸 어떻게 해결하나요?

📝 나의 답변:

비즈니스 로직이 분리되어 있지 않아 유지보수가 어렵고, 프론트 코드의 가시성도 떨어집니다.
또한 의존성 관리가 복잡합니다.
Spring에선 Build Tool로 의존성 관리를 처리하고, MVC 패턴에 따른 Controller, Service, View, Model을 분리하여 비즈니스 로직을 분리했습니다.

✅ 피드백:

- JSP/Servlet
- 비즈니스 로직과 화면에 표시될 로직이 혼재되어 가독성이 떨어짐
- 반복되는 Servlet 패턴으로 인해 유사한 패턴의 Servlet이 계속 증가함
- 객체를 직접 생성하기에 강한 결합을 가져 의존성 관리가 어려움
- 설정의 복잡도가 매우 높음

- Spring MVC
- IoC로 Spring이 객체를 대신 만들어 관리함
- DI를 통해 객체의 의존성을 자동으로 프레임워크가 처리
- 설정 복잡도를 낮춤